W raporcie wykorzystano następujące biblioteki języka R:
library(ggplot2)
library(plotly)
library(dplyr)
#REM library(stringr)
library(caret)
Celem ćwiczenia jest analiza wskazanego pliku pod kątem wpływu czynników zewnętrznych na rozmiar śledzia atlantyckiego. Na wstępie zbadano zmiany wielkości łowionych śledzi w kolejnych pomiarach. Widać, że do ok. 40% pomiarów średnia długość śledzia rośnie. Potem spada i jest to trwały trend. Analiza parametrów wykazała, że największy wpływ na rozmiar śledzi ma temperatura wody przy powierzchni. Wzrost temperatury powoduje zmniejszenie średniej długości śledzia atlantyckiego.
Dane źródłowe są dostępne w pliku http://www.cs.put.poznan.pl/dbrzezinski/teaching/sphd/sledzie.csv Zgodnie z opisem zawiera on pomiary złowionych śledzi oraz opis warunków. Kolejne kolumny w zbiorze danych to:
Wczytany zbiór ma 52582 wierszy.
Wyniki pomiarów są zapisane chronologicznie można zatem sprawdzić czy da się zauważyć zmianę długości łowionych śledzi i ewentualny trend.
Spadek długości śledzi w ostatnich latach jest zauważalny i widać stały trend spadkowy.
Wycinek pliku źródłowego:
## X length cfin1 cfin2 chel1 chel2 lcop1 lcop2 fbar recr
## 1 0 23.0 0.02778 0.27785 2.46875 NA 2.54787 26.35881 0.356 482831
## 2 1 22.5 0.02778 0.27785 2.46875 21.43548 2.54787 26.35881 0.356 482831
## 3 2 25.0 0.02778 0.27785 2.46875 21.43548 2.54787 26.35881 0.356 482831
## 4 3 25.5 0.02778 0.27785 2.46875 21.43548 2.54787 26.35881 0.356 482831
## 5 4 24.0 0.02778 0.27785 2.46875 21.43548 2.54787 26.35881 0.356 482831
## 6 5 22.0 0.02778 0.27785 2.46875 21.43548 2.54787 NA 0.356 482831
## cumf totaln sst sal xmonth nao
## 1 0.3059879 267380.8 14.30693 35.51234 7 2.8
## 2 0.3059879 267380.8 14.30693 35.51234 7 2.8
## 3 0.3059879 267380.8 14.30693 35.51234 7 2.8
## 4 0.3059879 267380.8 14.30693 35.51234 7 2.8
## 5 0.3059879 267380.8 14.30693 35.51234 7 2.8
## 6 0.3059879 267380.8 14.30693 35.51234 7 2.8
Podstawowe parametry wczytanych wartości:
## X length cfin1 cfin2
## Min. : 0 Min. :19.0 Min. : 0.0000 Min. : 0.0000
## 1st Qu.:13145 1st Qu.:24.0 1st Qu.: 0.0000 1st Qu.: 0.2778
## Median :26291 Median :25.5 Median : 0.1111 Median : 0.7012
## Mean :26291 Mean :25.3 Mean : 0.4458 Mean : 2.0248
## 3rd Qu.:39436 3rd Qu.:26.5 3rd Qu.: 0.3333 3rd Qu.: 1.7936
## Max. :52581 Max. :32.5 Max. :37.6667 Max. :19.3958
## NA's :1581 NA's :1536
## chel1 chel2 lcop1 lcop2
## Min. : 0.000 Min. : 5.238 Min. : 0.3074 Min. : 7.849
## 1st Qu.: 2.469 1st Qu.:13.427 1st Qu.: 2.5479 1st Qu.:17.808
## Median : 5.750 Median :21.673 Median : 7.0000 Median :24.859
## Mean :10.006 Mean :21.221 Mean : 12.8108 Mean :28.419
## 3rd Qu.:11.500 3rd Qu.:27.193 3rd Qu.: 21.2315 3rd Qu.:37.232
## Max. :75.000 Max. :57.706 Max. :115.5833 Max. :68.736
## NA's :1555 NA's :1556 NA's :1653 NA's :1591
## fbar recr cumf totaln
## Min. :0.0680 Min. : 140515 Min. :0.06833 Min. : 144137
## 1st Qu.:0.2270 1st Qu.: 360061 1st Qu.:0.14809 1st Qu.: 306068
## Median :0.3320 Median : 421391 Median :0.23191 Median : 539558
## Mean :0.3304 Mean : 520367 Mean :0.22981 Mean : 514973
## 3rd Qu.:0.4560 3rd Qu.: 724151 3rd Qu.:0.29803 3rd Qu.: 730351
## Max. :0.8490 Max. :1565890 Max. :0.39801 Max. :1015595
##
## sst sal xmonth nao
## Min. :12.77 Min. :35.40 Min. : 1.000 Min. :-4.89000
## 1st Qu.:13.60 1st Qu.:35.51 1st Qu.: 5.000 1st Qu.:-1.89000
## Median :13.86 Median :35.51 Median : 8.000 Median : 0.20000
## Mean :13.87 Mean :35.51 Mean : 7.258 Mean :-0.09236
## 3rd Qu.:14.16 3rd Qu.:35.52 3rd Qu.: 9.000 3rd Qu.: 1.63000
## Max. :14.73 Max. :35.61 Max. :12.000 Max. : 5.08000
## NA's :1584
## wsp. korelacji
## X -0.33913000
## length 1.00000000
## cfin1 0.08122553
## cfin2 0.09832515
## chel1 0.22091226
## chel2 -0.01430766
## lcop1 0.23775402
## lcop2 0.04894328
## fbar 0.25697135
## recr -0.01034244
## cumf 0.01152544
## totaln 0.09605811
## sst -0.45167059
## sal 0.03223550
## xmonth 0.01371195
## nao -0.25684475
Z powyższej analizy widać, że najbardziej skorelowanym z długością śledzi jest parametr sst oznaczający temperaturę oceanu. Drugim parametrem jest X określający numer wiersza. Z oczywistych przyczyn nie będziemy zajmować się analizą parametru porządkowego. Parametry fbar i nao mają prawie identyczną korelację z długością śledzi. Do dalszej analizy wybieramy fbar ponieważ nao jest silnie skorelowany z sst.
Po analizie korelacji zdecydowano o wyborze następujących parametrów:
Jak widać w podsumowaniu danych tylko parametr sst ma puste wartości. Ze względu na niewielką ich liczbę w porównaniu do całkowitego wolumenu (1584/52582) zdecydowano o wykluczeniu tych pomiarów z dalszej analizy. W sytuacji, gdy pustych wartości byłoby więcej należałoby zastosować inne podejście, np. wypełnienie średnią wartością, średnią kroczącą itp.
Utworzenie regresora z wykorzystaniem metody kNN.
set.seed(23)
inTraining <-
createDataPartition(
y = df2$length,
p = .75,
list = FALSE)
training <- df2[ inTraining,]
testing <- df2[-inTraining,]
ctrl <- trainControl(
# powtórzona ocena krzyżowa
method = "repeatedcv",
# liczba podziałów
number = 2,
# liczba powtórzeń
repeats = 5)
fit <- train(length ~ .,
data = training,
method = "knn",
trControl = ctrl,
preProcess = c("center","scale"),
tuneLength = 5)
Parametry regresora:
## k-Nearest Neighbors
##
## 38250 samples
## 4 predictor
##
## Pre-processing: centered (4), scaled (4)
## Resampling: Cross-Validated (2 fold, repeated 5 times)
## Summary of sample sizes: 19124, 19126, 19127, 19123, 19126, 19124, ...
## Resampling results across tuning parameters:
##
## k RMSE Rsquared MAE
## 5 1.127596 0.5445332 0.8833578
## 7 1.111266 0.5540285 0.8705737
## 9 1.106173 0.5564194 0.8671249
## 11 1.104861 0.5565396 0.8669588
## 13 1.105787 0.5552225 0.8680676
##
## RMSE was used to select the optimal model using the smallest value.
## The final value used for the model was k = 11.